/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controller;

import Core.CoreManager;
import DataAccess.ChiTietPhieuMuon;
import DataAccess.PhieuMuon;
import DataAccess.Sach;
import DataAccess.TacGia;
import java.util.List;
import java.util.Vector;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import org.hibernate.Query;

/**SachController sachControl=new SachController();
    PhieuMuonController pmControl=new PhieuMuonController();
 *
 * @author My PC
 */
public class ChiTietPhieuMuonController extends CoreManager<ChiTietPhieuMuon> {
    private String[] columnNames = {"Mã phiếu mượn","Mã sách","Tình trạng sách"};
    private String[] strKiemTra={"Mã phiếu mượn","Mã sách","Tên sách","Ngày hẹn trả","Tình trạng sách"};
    SachController sachControl=new SachController();
    PhieuMuonController pmControl=new PhieuMuonController();
            
    public ChiTietPhieuMuonController()
    { super();
    GetAllData("ChiTietPhieuMuon");
    }
    @Override
    public void SetcolumnNames()
    {
        super.columnNames=columnNames;
    }
    public void showData(JTable table)
    {
        GetAllData("ChiTietPhieuMuon");
        DefaultTableModel tableModel=new DefaultTableModel(columnNames, 0);
        table.setModel(tableModel);
       // int no=1;
        for(Object o: super.list)
        {
            ChiTietPhieuMuon tg=(ChiTietPhieuMuon)o;
            Vector oneRow=new Vector();
           oneRow.add(tg.getPhieuMuonId());
            oneRow.add(tg.getSachId());
            oneRow.add(tg.getTinhTrangSach());
            tableModel.addRow(oneRow);
          //  System.out.println(tableModel.);
        }
    }
    public ChiTietPhieuMuon getCTPMByIndex(int index)
    {
        return (ChiTietPhieuMuon)list.get(index);
    }
    
      public int GetLastID()
    {
        if(list.size()!=0)
        return ((ChiTietPhieuMuon)this.list.get(list.size()-1)).getCtpmid();
        else return -1;
        
    }
      
      public List<ChiTietPhieuMuon> GetCTPMByDocGia(int id)
      {
          List<ChiTietPhieuMuon> lstCTPM=null;
          String hql= "from ChiTietPhieuMuon where phieuMuonId in( select phieuMuonId from PhieuMuon where DocGiaID = "+String.valueOf(id)+")";
           try
        {
        this.session.beginTransaction();
        Query query=session.createQuery(hql);//.setParameter("s"+String.valueOf(id),id);
        System.out.println(query);
        this.session.getTransaction().commit();
        lstCTPM=query.list();
        }
        catch(Exception ex)
        {
            ex.printStackTrace();
        }
           return lstCTPM;
      }
      
      public boolean KiemTraSoLuong(int id,JTable table,int sachID)
      {
          List<ChiTietPhieuMuon> lstCTPM=GetCTPMByDocGia(id);
          int i=lstCTPM.size();
          int j=table.getRowCount();
          if(j==6)
          {
              JOptionPane.showConfirmDialog(null, "Chỉ tối đa 6 quyển cho 1 lần mượn","Thông báo",JOptionPane.OK_OPTION);
              return false;
          }
          else 
          {
              for(Object o: lstCTPM)
              {
                  ChiTietPhieuMuon ctpm=(ChiTietPhieuMuon)o;
                  if(ctpm.getSachId()==sachID)
                  {
                      JOptionPane.showConfirmDialog(null, "Bạn đã mượn tài liệu này rồi.","Thông báo",JOptionPane.OK_OPTION);
                      return false;
                  }
              }
             if(j>0)
             {
                 TableModel model=table.getModel();
                 for(int k=0;k<j;k++)
                 {
                     if((int)model.getValueAt(k, 0)==sachID)
                        {
                      JOptionPane.showConfirmDialog(null, "Bạn đã chọn tài liệu này rồi.","Thông báo",JOptionPane.OK_OPTION);
                      return false;
                  } 
                 }
             }
          }
           return true;   
      }
      
      public boolean KiemTraTaiLieu(Sach s)
      {
          if(s.getSoSach()==0)
              {
                      JOptionPane.showConfirmDialog(null, "Tài liệu bạn lựa chọn đã hết.","Thông báo",JOptionPane.OK_OPTION);
                      return false;
                  }
          return true;
      }
}


